C++  데이터 구조 링크 의 실현 코드

5657 단어 C++체인 테이블
C++링크
그동안 C++에 있 는 링크 에 별로 신경 을 쓰 지 않 았 는데 갑자기 쓰 라 고 하 니까 자꾸 틀 렸 어 요.어 쩔 수 없 이 이 분야 의 지식 을 잘 보완 하기 로 결 정 했 고 앞으로 의 데이터 구조 에 좋 은 기반 을 다 져 주 었 습 니 다.그래서 저 는 다음 과 같은 몇 가 지 를 정리 하 겠 습 니 다.어떤 부분 은 정확 하지 않 을 수도 있 습 니 다.그리고 여러분 께 서 아낌없이 가르침 을 주 셔 서 공동으로 발전 하 는 데 목적 을 두 시기 바 랍 니 다.
요약:
1.링크 List 의 기본 단원 은 노드 노드 노드 이 므 로 조작 이 편리 하려 면 모든 단계 에 기 초 를 다 져 야 한다.Node 의 기본 구 조 는 다음 과 같다.

class Node{
public:
  int data;
  Node *next;
  Node(int da=0,Node *p=NULL){
    this->data=da;
    this->next=p;
  }
};
Node 의 구성원 변 수 는 모두 두 개 입 니 다.모두 Public 입 니 다.우 리 는 이 두 변 수 를 조작 해 야 하기 때문에 private 유형 이 될 수 없습니다.그 다음 에 구조 함수 입 니 다.두 번 째 매개 변 수 는 기본 값 이 NULL 입 니 다.즉,우리 가 새 노드 를 만 들 때 두 번 째 매개 변수 만 지정 하고 두 번 째 매개 변 수 를 쓰 지 않 으 면 기본 값 은 NULL 입 니 다.이런 방식 으로 Node 를 더욱 유연 하 게 사용 할 수 있 습 니 다.개인 적 으로 이렇게 사용 하 는 것 을 권장 합 니 다.
2.두 번 째 단 계 는 바로 우리 의 링크 를 만 드 는 것 입 니 다.마찬가지 로 우리 가 먼저 링크 의 코드 를 제시 하고 일일이 설명 하 는 것 입 니 다.

class List{
private:
  Node *head,*tail;
  int position;
public:
  List(){head=tail=NULL;};
  ~List(){delete head;delete tail;};
  void print();
  void Insert(int da=0);
  void Delete(int da=0);
  void Search(int da=0);
};
우리 안에 두 개의 데이터 형식 이 있 는데 하 나 는 Node 입 니 다.다른 하 나 는 노드 위 치 를 대신 하 는 구성원 변 수 를 말한다.헤드 와 테 일 을 사용 하여 이름 을 짓 는 것 은 이름 을 알 고 의 미 를 알 기 위해 서 입 니 다.그 다음 에 중요 한 여섯 개의 함수 입 니 다.각자 의 기능 은 말 하지 않 아 도 알 수 있 습 니 다.사실은 가장 중요 한 것 은 모든 함수 에서 우 리 는 head 와 tail 두 구성원 변 수 를 기본적으로 조작 할 수 있 습 니 다.이렇게 하면 우리 의 매개 변수 목록 을 간소화 하고 함 수 를 더욱 우아 하 게 할 수 있 습 니 다.
다음은 제 단일 체인 시트 의 실현 입 니 다.링크 를 만 들 고 값 을 삽입 하 며 특정한 값 을 삭제 하고 링크 에 있 을 만 한 위 치 를 찾 는 것 을 포함 합 니 다.

#include<iostream>
using namespace std;

class Node{
public:
  int data;
  Node *next;
  Node(int da=0,Node *p=NULL){
    this->data=da;
    this->next=p;
  }
};

class List{
private:
  Node *head,*tail;
  int position;
public:
  List(){head=tail=NULL;};
  ~List(){delete head;delete tail;};
  void print();
  void Insert(int da=0);
  void Delete(int da=0);
  void Search(int da=0);
  int getValueAt(int position);
  void setValueAt(int position,int da);
};

int List::getValueAt(int position){
  Node *p=head;
  if(p==NULL){
    cout<<"The List is Empty!"<<endl;
  }else{
    int posi=0;
    while(p!=NULL&&posi!=position){
      posi++;
      p=p->next;
    }
    if(p==NULL){
      cout<<"There is no value of this position in this List!"<<endl;
    }else{
      cout<<"In this Position,the value is"<<p->data<<endl;
    }
  }
  return p->data;
}

void List::setValueAt(int position,int da){
  Node *p=head;
  if(p==NULL){
    cout<<"The List is Empty!"<<endl;
  }else{
    int posi=0;
    while(p!=NULL&&posi!=position){
      posi++;
      p=p->next;
    }
    if(p==NULL){
      cout<<"There is No Position in this List!"<<endl;
    }else{
      p->data=da;
      cout<<"The Value in this position has been Updated!"<<endl;
    }
  }
}

void List::Search(int da){

Node *p=head;
  if(p==NULL){
    cout<<"Sorry, The List is Empty!"<<endl;
    return;
  }
  int count=0;
  while(p!=NULL&&p->data!=da){
    p=p->next;
    count++;
  }
  cout<<"the value you want to search is at position %d"<<count<<endl;
}

void List::Delete(int da){
  Node *p=head,*q=head;
  if(p==NULL){
    cout<<"Sorry, The List is Empty!"<<endl;
    return;
  }
  while(p!=NULL&&p->data!=da){
    q=p;
    p=p->next;
  }
  q->next=p->next;
  cout<<"The Deletion Operation had been finished!"<<endl;
}

void List::Insert(int da){
  if(head==NULL){
    head=tail=new Node(da);
    head->next=NULL;
    tail->next=NULL;
  }else{
    Node *p=new Node(da);
    tail->next=p;
    tail=p;
    tail->next=NULL;
  }

}

void List::print(){
  Node *p=head;
  while(p!=NULL){
    cout<<p->data<<" \a";
    p=p->next;
  }
  cout<<endl;
}

int main(){
  cout<<"Hello World!"<<endl;
  List l1;
  l1.Insert(1);
  l1.Insert(2);
  l1.Insert(3);
  l1.Insert(4);
  l1.Insert(5);
  l1.Insert(6);
  l1.Insert(7);
  l1.print();
  l1.Search(4);
  l1.Delete(6);
  l1.print();
  l1.getValueAt(3);
  l1.setValueAt(3,9);
  l1.print();
  cout<<"The End!"<<endl;
  return 0;
}

//        ,     4        3,            

다음은 코드 가 실 행 된 결과 입 니 다.

자,싱글 체인 시트 의 기본 적 인 조작 은 대체적으로 이 렇 습 니 다.우리 가 모두 그 중에서 얻 을 수 있 기 를 바 랍 니 다.코드 에 무슨 오류 가 있 는 지 발견 하 셨 다 면 아 낌 없 는 가르침 을 바 랍 니 다.우리 함께 발전 합 시다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기